package fr.afcepf.atod16.groupe1.projet2.servicePushStock;

import fr.afcepf.atod16.groupe1.projet2.configuration.ConfigurationRappelLocal;
import fr.afcepf.atod16.groupe1.projet2.dao.DaoProduitStock;
import fr.afcepf.atod16.groupe1.projet2.dto.DtoProduitStock;
import fr.afcepf.groupe1.projet1.servicemaj.DtoMajStock;
import fr.afcepf.groupe1.projet1.servicemaj.InvalidArgumentException_Exception;
import fr.afcepf.groupe1.projet1.servicemaj.NotExistException_Exception;
import fr.afcepf.groupe1.projet1.servicemaj.ServiceMaj;
import fr.afcepf.groupe1.projet1.servicemaj.ServiceMajWebservice;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.ejb.Schedule;
import javax.ejb.Stateless;

/**
 * Service métier poussant les positions de stock vers le site
 * @author cedric
 */
@Stateless
public class ServicePushStock {
    
    @EJB
    DaoProduitStock dao;
    
    @EJB
    ConfigurationRappelLocal conf;
    
    public ServicePushStock() {
    }
    
    /**
     * Déclenche un appel webservice poussant les positions de stock vers le site
     */
    @Schedule(minute="*",hour="*",persistent=false)
    public void updateStock(){
        try {
            System.out.println("--- Tic Tac ---");
            List<DtoProduitStock> listeProd = dao.lister();
            List<DtoMajStock> listeMaj = new ArrayList<DtoMajStock>();
            DtoMajStock courant;
            for (DtoProduitStock dtoProduitStock : listeProd) {
                System.out.println(dtoProduitStock.getCodeEAN13()+" : "+dtoProduitStock.getStock());
                courant = new DtoMajStock();
                courant.setCodeEAN13(dtoProduitStock.getCodeEAN13());
                courant.setStock(dtoProduitStock.getStock());
                listeMaj.add(courant);
            }
            ServiceMajWebservice maj = new ServiceMaj().getServiceMajPort();
            maj.majStock(listeMaj);
            
            System.out.println("--- Conf ---");
            System.out.println(conf.getUrlEndpointToPush());
            
        } catch (InvalidArgumentException_Exception ex) {
            Logger.getLogger(ServicePushStock.class.getName()).log(Level.SEVERE, null, ex);
        } catch (NotExistException_Exception ex) {
            Logger.getLogger(ServicePushStock.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
